<?php

/**
 * asesorias actions.
 *
 * @package    atenea
 * @subpackage asesorias
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 2288 2006-10-02 15:22:13Z fabien $
 */
class asesoriasActions extends autoasesoriasActions
{

  public function executeIndex()
  {
    return $this->forward('asesorias', 'create');
  }

// Funcion donde se muestran los datos del estudiante
  public function executeDatos()
	{

	  if ($this->getRequestParameter('ajax')=='1')
	    {
            $objEstudiante = new Estudiante();
         	$this->ced = $this->getRequestParameter('cedula');
         	$datos = $objEstudiante->getDatosDelEstudianteConCed($this->ced);
         	$this->estudiante =$datos;
         			if ($datos == null)
         			{
         				$this->setFlash('notice', 'Esta cedula no le pertenece a un estudiante');
         			}
         			else
         			{
						$objUsu = $datos->getObjAteneaUsuarioConCed();
						$this->usuario = $objUsu;
						$this->getUser()->setAttribute('idSol', $objUsu->getId());
         			}
	    }
	}

    public function executeList()
  {
    $this->processSort();

    $this->processFilters();


    // pager
    $this->pager = new sfPropelPager('SesionAsesoria', 20);
    $c = new Criteria();
    $this->addSortCriteria($c);
    $this->addFiltersCriteria($c);
    $this->pager->setCriteria($c);
    $this->pager->setPage($this->getRequestParameter('page', 1));
    $this->pager->init();
  }

  public function executeCreate()
  {
    return $this->forward('asesorias', 'edit');
  }

  public function executeSave()
  {
    return $this->forward('asesorias', 'edit');
  }

  public function executeEdit()
  {
    $this->sesion_asesoria = $this->getSesionAsesoriaOrCreate();

    if ($this->getRequest()->getMethod() == sfRequest::POST)
    {
      $this->updateSesionAsesoriaFromRequest();

      $this->saveSesionAsesoria($this->sesion_asesoria);

      $this->setFlash('notice', 'La Asesoria ha sido registrada');

      if ($this->getRequestParameter('save_and_add'))
      {
        return $this->redirect('asesorias/create');
      }
      else if ($this->getRequestParameter('save_and_list'))
      {
        return $this->redirect('asesorias/list');
      }
      else
      {
        return $this->redirect('asesorias/create');
      }
    }
    else
    {
      $this->labels = $this->getLabels();
    }
  }

  public function executeDelete()
  {
    $this->sesion_asesoria = SesionAsesoriaPeer::retrieveByPk($this->getRequestParameter('id'));
    $this->forward404Unless($this->sesion_asesoria);

    try
    {
      $this->deleteSesionAsesoria($this->sesion_asesoria);
    }
    catch (PropelException $e)
    {
      $this->getRequest()->setError('delete', 'Could not delete the selected Sesion asesoria. Make sure it does not have any associated items.');
      return $this->forward('asesorias', 'list');
    }

    return $this->redirect('asesorias/list');
  }

  public function handleErrorEdit()
  {
    $this->preExecute();
    $this->sesion_asesoria = $this->getSesionAsesoriaOrCreate();
    $this->updateSesionAsesoriaFromRequest();

    $this->labels = $this->getLabels();

    return sfView::SUCCESS;
  }

  protected function saveSesionAsesoria($sesion_asesoria)
  {

    $sesion_asesoria->save();

  }

  protected function deleteSesionAsesoria($sesion_asesoria)
  {
    $sesion_asesoria->delete();
  }

  protected function updateSesionAsesoriaFromRequest()
  {
  	$sesion_asesoria = $this->getRequestParameter('sesion_asesoria');
    $idU = $this->getUser()->getAttribute('idSol');
    $this->getUser()->getAttributeHolder()->remove('idSol');
    $asesor = 1;

    if (!$idU){
	 $this->setFlash('notice', 'Debe ingresar ingresar una cedula de estudiante correcta');
     $this->redirect('asesorias/create');
    }
    else{
    $this->sesion_asesoria->setEstudianteId($idU);
    }

    $this->sesion_asesoria->setAsesorId($asesor);

    if (!$sesion_asesoria['fecha'])
    {
    	$this->setFlash('notice', 'Debe ingresar la Fecha de la asesoria');
     	$this->redirect('asesorias/create');
    }
    else{
    if (isset($sesion_asesoria['fecha']))
    {
      if ($sesion_asesoria['fecha'])
      {
        try
        {
          $dateFormat = new sfDateFormat($this->getUser()->getCulture());
                              if (!is_array($sesion_asesoria['fecha']))
          {
            $value = $dateFormat->format($sesion_asesoria['fecha'], 'i', $dateFormat->getInputPattern('d'));
          }
          else
          {
            $value_array = $sesion_asesoria['fecha'];
            $value = $value_array['year'].'-'.$value_array['month'].'-'.$value_array['day'].(isset($value_array['hour']) ? ' '.$value_array['hour'].':'.$value_array['minute'].(isset($value_array['second']) ? ':'.$value_array['second'] : '') : '');
          }
          $this->sesion_asesoria->setFecha($value);
        }
        catch (sfException $e)
        {
          // not a date
        }
      }
      else
      {
        $this->sesion_asesoria->setFecha(null);
      }
    }
    }
    if (!$sesion_asesoria['turno_id'])
    {
    	$this->setFlash('notice', 'Debe ingresar el Turno de la asesoria');
     	$this->redirect('asesorias/create');
    }
    else {
    if (isset($sesion_asesoria['turno_id']))
    {
    $this->sesion_asesoria->setTurnoId($sesion_asesoria['turno_id'] ? $sesion_asesoria['turno_id'] : null);
    }
    }

    if (!$sesion_asesoria['hora'])
    {
    	$this->setFlash('notice', 'Debe ingresar la Hora de la asesoria  Ejemplo: 10:10:00');
     	$this->redirect('asesorias/create');
    }
    else{
    if (isset($sesion_asesoria['hora']))
    {
      $this->sesion_asesoria->setHora($sesion_asesoria['hora']);
    }
    }

    if (!$sesion_asesoria['causa_rend_actual'])
    {
    	$this->setFlash('notice', 'Debe ingresar la Causa del Rendimiento Actual');
     	$this->redirect('asesorias/create');
    }
    else {
    if (isset($sesion_asesoria['causa_rend_actual']))
    {
      $this->sesion_asesoria->setCausaRendActual($sesion_asesoria['causa_rend_actual']);
    }
    }
    if (!$sesion_asesoria['conclusiones'])
    {
    	$this->setFlash('notice', 'Debe ingresar las Observaciones de la asesoria');
     	$this->redirect('asesorias/create');
    }
    else{
    if (isset($sesion_asesoria['conclusiones']))
    {
      $this->sesion_asesoria->setConclusiones($sesion_asesoria['conclusiones']);
    }
    }
  }

  protected function getSesionAsesoriaOrCreate($id = 'id')
  {
    if (!$this->getRequestParameter($id))
    {
      $sesion_asesoria = new SesionAsesoria();
    }
    else
    {
      $sesion_asesoria = SesionAsesoriaPeer::retrieveByPk($this->getRequestParameter($id));

      $this->forward404Unless($sesion_asesoria);
    }

    return $sesion_asesoria;
  }

  protected function processFilters()
  {
  }

  protected function processSort()
  {
    if ($this->getRequestParameter('sort'))
    {
      $this->getUser()->setAttribute('sort', $this->getRequestParameter('sort'), 'sf_admin/sesion_asesoria/sort');
      $this->getUser()->setAttribute('type', $this->getRequestParameter('type', 'asc'), 'sf_admin/sesion_asesoria/sort');
    }

    if (!$this->getUser()->getAttribute('sort', null, 'sf_admin/sesion_asesoria/sort'))
    {
    }
  }

  protected function addFiltersCriteria($c)
  {
  }

  protected function addSortCriteria($c)
  {
    if ($sort_column = $this->getUser()->getAttribute('sort', null, 'sf_admin/sesion_asesoria/sort'))
    {
      $sort_column = SesionAsesoriaPeer::translateFieldName($sort_column, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_COLNAME);
      if ($this->getUser()->getAttribute('type', null, 'sf_admin/sesion_asesoria/sort') == 'asc')
      {
        $c->addAscendingOrderByColumn($sort_column);
      }
      else
      {
        $c->addDescendingOrderByColumn($sort_column);
      }
    }
  }

  protected function getLabels()
  {
    return array(
      'sesion_asesoria{asesor_id}' => 'Asesor:',
      'sesion_asesoria{estudiante_id}' => 'Estudiante:',
      'sesion_asesoria{fecha}' => 'Fecha:',
      'sesion_asesoria{turno_id}' => 'Turno:',
      'sesion_asesoria{hora}' => 'Hora:',
      'sesion_asesoria{causa_rend_actual}' => 'Causas del Rendimeinto Actual:',
      'sesion_asesoria{conclusiones}' => 'Observaciones:',
    );
  }
}
